/**
 * 格式化文件大小
 * 将字节数转换为人类可读的格式（如：1.5 MB）
 * 
 * @param {number} bytes - 文件大小（字节）
 * @param {number} [decimals=2] - 小数位数
 * @returns {string} 格式化后的文件大小
 */
export const formatFileSize = (bytes, decimals = 2) => {
    if (bytes === 0) return '0 B';

    const k = 1024;
    const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
    const i = Math.floor(Math.log(bytes) / Math.log(k));

    return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + ' ' + sizes[i];
};

/**
 * 获取文件扩展名
 * 
 * @param {string} filename - 文件名
 * @returns {string} 文件扩展名（小写）
 */
export const getFileExtension = (filename) => {
    return filename.slice((filename.lastIndexOf('.') - 1 >>> 0) + 2).toLowerCase();
};

/**
 * 检查文件类型是否允许
 * 
 * @param {File} file - 文件对象
 * @param {string[]} allowedTypes - 允许的文件类型数组
 * @returns {boolean} 是否允许该文件类型
 */
export const isFileTypeAllowed = (file, allowedTypes) => {
    const extension = getFileExtension(file.name);
    return allowedTypes.includes(extension);
};

/**
 * 检查文件大小是否在限制范围内
 * 
 * @param {File} file - 文件对象
 * @param {number} maxSize - 最大文件大小（字节）
 * @returns {boolean} 是否在大小限制范围内
 */
export const isFileSizeAllowed = (file, maxSize) => {
    return file.size <= maxSize;
}; 